iT邦幫忙

2023 iThome 鐵人賽

1
自我挑戰組

用ChatGPT詠唱來完成工作與點亮前後端技能樹系列 第 41 篇

【Day41】ChatGPT請教教我:nvm!Node.js 版本控管!

  • 分享至 

  • xImage
  •  

這個章節要來探討nvm這個工具

在我安裝Nest的時候,突然發現我兩年前開發專案用的 Node.js 14已經太舊了
用14版會噴出很多錯誤訊息

但工作的專案版本因為套件有相依的問題,不能輕易直接升版,建置會跑錯誤訊息
想要更輕鬆的切換node版本!多啦O夢快救救我!
https://ithelp.ithome.com.tw/upload/images/20231024/20135750kvP7M9nDsR.png

要在電腦中隨意切換 Node.js 版本,你可以使用一個稱為 nvm (Node Version Manager) 的工具。這是一個方便的工具,可以讓你在不同版本的 Node.js 之間輕鬆切換。

以下是使用 nvm 的步驟:

  1. 安裝 nvm:

    首先,你需要在你的電腦上安裝 nvm。你可以打開終端機並執行以下指令:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    

    或者,你也可以使用 wget 進行安裝:

    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    

    安裝完成後,重新開啟一個終端機窗口。

  2. 安裝 Node.js:

    安裝完 nvm 後,你可以使用以下指令安裝你所需的 Node.js 版本:

    nvm install 版本號
    

    例如,如果你想要安裝 Node.js 的 LTS 版本,可以執行:

    nvm install --lts
    
  3. 切換 Node.js 版本:

    安裝完多個版本後,你可以隨時切換到所需的版本:

    nvm use 版本號
    

    例如:

    nvm use 14.17.6
    

    這將使你的系統在需要時使用特定版本的 Node.js。

透過這個方式,你可以輕鬆地在不同的專案中使用不同版本的 Node.js,而不必全局更改安裝的版本。

OK!
ChatGPT跟我們介紹nvm這個工具
開始安裝之前先看一下介紹,了解一下這個工具

nvm(Node Version Manager)介紹

https://ithelp.ithome.com.tw/upload/images/20231024/20135750fTaujKTh2X.png

當然,讓我們針對 nvm(Node Version Manager)的概念和功能提供一個完整的介紹。

概念:

nvm 是一個用於管理 Node.js 版本的工具。它允許你在同一台電腦上同時安裝和管理多個 Node.js 版本,並輕鬆切換它們以滿足不同專案的需求。這對於開發人員來說非常有用,因為不同的專案可能需要不同版本的 Node.js,或者你可能需要測試你的應用程序在不同版本下的運行情況。

功能:

  1. 安裝不同版本的 Node.js:nvm 允許你從 Node.js 的官方存儲庫中安裝不同版本的 Node.js。你可以輕鬆地安裝最新的 LTS 版本、最新的穩定版或特定版本的 Node.js。
  2. 切換 Node.js 版本:使用 nvm,你可以隨時切換正在使用的 Node.js 版本。這可以通過運行 nvm use 命令來實現,並且你的系統將在需要時切換到指定版本。
  3. 管理全局和專案範圍的 Node.js 版本:nvm 允許你設置全局的 Node.js 版本,這將影響你整個系統的默認 Node.js 版本。此外,你還可以在每個專案的根目錄中創建一個 .nvmrc 文件,以指定該專案所需的 Node.js 版本。當你進入專案目錄時,nvm 將自動切換到正確的版本。
  4. 自動切換版本:當你進入專案目錄時,nvm 可以自動檢測 .nvmrc 文件,並切換到所需的 Node.js 版本。這使得在不同專案之間切換版本變得非常方便。
  5. 管理全局和專案範圍的 npm 套件:除了管理 Node.js 版本外,nvm 還允許你管理全局和專案範圍的 npm 套件。這意味著你可以為每個專案保持獨立的 npm 套件,而不會影響其他專案。

總之,nvm 是一個強大的工具,特別適合前端和後端開發人員,因為他們可能需要在不同的專案中使用不同版本的 Node.js,並確保一致性和方便性。這讓你能夠更有效地管理你的 Node.js 開發環境。

了解完畢就可以來再看一下安裝教學
事情是這樣的,不同的作業系統安裝方式有一點不同

而且直接照著ChatGPT一開始說的方式安裝
只會得到「'nvm' 不是內部或外部命令、可執行的程式或批次檔。」
或是「nvm: command not found」

安裝教學

https://ithelp.ithome.com.tw/upload/images/20231024/20135750bx3m3sXJWq.png

好的,我將為你提供在 Windows 和 macOS 上安裝 nvm 的詳細步驟。

在 Windows 上安裝 nvm:

  1. 下載 nvm-installer:

    前往 nvm 的 GitHub 存儲庫 nvm-windows 下載最新版本的 nvm-installer(nvm-setup.zip)。

  2. 執行 nvm-installer:

    解壓縮下載的 zip 檔案,然後執行 nvm-setup.exe 安裝程序。

  3. 按照安裝程序指示:

    遵循安裝程序的提示進行安裝。你可以接受所有默認設置,除非你有特定的需求。

  4. 確認 nvm 安裝:

    安裝完成後,打開一個新的終端窗口,輸入以下指令來確認 nvm 是否成功安裝:

    nvm --version
    

    如果成功安裝,它會顯示 nvm 的版本號。

在 macOS 上安裝 nvm:

  1. 使用 Homebrew 安裝 nvm:

    開啟終端機並執行以下指令來使用 Homebrew 安裝 nvm:

    brew install nvm
    
  2. 配置終端機文件(例如:.bash_profile 或 .zshrc):

    在終端機中打開你的配置文件,這可以是 .bash_profile 或 .zshrc,取決於你使用的終端機。

    nano ~/.bash_profile
    

    或者

    nano ~/.zshrc
    

    在文件的底部添加以下行,然後按下 Ctrl + X 保存並退出。

    export NVM_DIR="$HOME/.nvm"
    [ -s "$(brew --prefix nvm)/nvm.sh" ] && . "$(brew --prefix nvm)/nvm.sh"
    
  3. 重新加載配置文件:

    返回終端機,執行以下指令來重新加載你的配置文件:

    source ~/.bash_profile
    

    或者

    source ~/.zshrc
    
  4. 確認 nvm 安裝:

    輸入以下指令來確認 nvm 是否成功安裝:

    nvm --version
    

    如果成功安裝,它會顯示 nvm 的版本號。

現在你已經在你的系統上成功安裝了 nvm,你可以開始使用它來管理你的 Node.js 版本了。如果你需要安裝特定版本的 Node.js,可以使用 nvm install 版本號 命令,然後使用 nvm use 版本號 來切換版本。

好,我覺得ChatGPT連nano的使用方式都有提到蠻友善的
那接下來來了解NVM的詳細使用教學

nvm指令

https://ithelp.ithome.com.tw/upload/images/20231024/20135750v8K099f3Pv.png

當然,我會提供一些常用的 nvm 指令,這些指令可以幫助你有效地管理你的 Node.js 版本。請注意,這些指令將以台灣用語和繁體中文提供。

  1. 安裝特定版本的 Node.js:

    nvm install 版本號
    

    例如,如果你想安裝 Node.js 的 LTS 版本(長期支持版本),可以使用:

    nvm install --lts
    
  2. 列出所有已安裝的 Node.js 版本:

    nvm ls
    

    這會顯示所有你在系統上安裝的 Node.js 版本。

  3. 切換到特定版本的 Node.js:

    nvm use 版本號
    

    例如:

    nvm use 14.17.6
    

    這將使你的系統在需要時使用特定版本的 Node.js。

  4. 設定預設的 Node.js 版本:

    nvm alias default 版本號
    

    這將設置一個預設的 Node.js 版本,當你開啟新的終端窗口時將會使用它。

  5. 查看當前使用的 Node.js 版本:

    nvm current
    

    這會顯示當前正在使用的 Node.js 版本。

  6. 卸載特定版本的 Node.js:

    nvm uninstall 版本號
    

    這會刪除你指定的 Node.js 版本。

  7. 查看可用的 Node.js 版本:

    nvm ls-remote
    

    這會列出所有可用的 Node.js 版本。

  8. 更新 nvm:

    nvm install --latest-npm
    

    這將安裝最新版本的 npm(Node 包管理器)。

  9. 更新 nvm 本身:

    nvm upgrade
    

    這會升級 nvm 到最新版本。

  10. 列出所有可用的 nvm 指令:

    nvm help
    

    這會顯示所有可用的 nvm 指令及其說明。

這些指令將幫助你在不同專案之間輕鬆地管理和切換 Node.js 版本。如果你需要更詳細的幫助,可以使用 nvm help 來查看 nvm 的說明文檔。

每次都比貪心還要更貪心
https://ithelp.ithome.com.tw/upload/images/20231024/20135750Fvw5Z4rkFU.png

當然,除了基本的使用,你也可以探索一些進階的 nvm 功能,以更有效地管理你的 Node.js 環境。以下是一些進階使用 nvm 的示例:

  1. 使用 .nvmrc 文件:

    在你的專案目錄中,你可以創建一個名為 .nvmrc 的文件,其中包含所需的 Node.js 版本號。當你進入該專案目錄時,nvm 會自動切換到指定的版本。例如,創建一個 .nvmrc 文件並添加以下內容:

    14.17.6
    

    當你進入專案目錄時,執行 nvm use 將自動切換到 Node.js 14.17.6。

  2. 使用多個 .nvmrc 文件:

    如果你的專案有不同的部分需要不同版本的 Node.js,你可以在不同的子目錄中創建不同的 .nvmrc 文件。這樣,你可以根據專案的部分選擇不同的 Node.js 版本。

  3. 使用 nvm 別名:

    你可以為不同版本的 Node.js 創建別名,以簡化版本切換。例如,你可以創建一個名為 "default" 的別名,讓它指向你喜歡的 Node.js 版本:

    nvm alias default 14.17.6
    

    現在,當你運行 nvm use default 時,它將自動切換到 14.17.6 版本。

  4. 使用 nvm 的套件管理功能:

    nvm 還具有用於管理全局和專案範圍 npm 套件的功能。你可以使用 nvm use 版本號 來切換到特定版本的 Node.js,然後在專案中運行 npm install 以安裝該版本下所需的套件。這樣可以確保專案的 npm 套件版本與所選 Node.js 版本兼容。

  5. 導入和導出版本號:

    nvm 允許你將版本號導入和導出到文件。例如,你可以將目前的版本號導出到文件:

    nvm list > versions.txt
    

    然後,你可以在另一個地方導入這些版本號:

    nvm install $(cat versions.txt)
    

    這對於在不同計算機上保持一致的 Node.js 版本非常有用。

這些進階使用方式可以幫助你更靈活地管理 Node.js 版本,特別是在擁有多個專案,每個專案需要不同版本的情況下。請根據你的需求來選擇適合的功能。

NodeJS版本&概念

nvm是用來切換與管理版本的
一開始也提到,我是因為遇到了版本問題無法安裝nestJS,所以開始尋求版本管理的工具

NodeJS的版本到底影響了什麼,其版本又為什麼過個兩三年就被視為「過舊」
我們來好好了解一下
https://ithelp.ithome.com.tw/upload/images/20231024/20135750S6BDIIDTgN.png

Node.js 的不同版本會包含以下種類的差異:

  1. 新特性和改進:

    每個新版本通常會引入新的特性、功能和改進。這可能包括新的 JavaScript 語言功能、API 的新增或變更、效能優化,甚至是全新的模組。

  2. 效能提升:

    隨著 Node.js 版本的升級,通常會帶來效能的提升。這可能是由於運行時的優化、V8 引擎的更新或其他相關的改進。

  3. 安全性改進:

    新版本通常會修補先前版本中的安全漏洞,這使得升級到最新版本尤其重要以保護你的應用程式。

  4. 穩定性和可靠性:

    隨著版本的更新,Node.js 也會變得更加穩定和可靠。這包括修復先前版本中的錯誤和問題。

  5. API 變更:

    有時,新版本可能會引入對 API 的變更。這可能會影響到使用特定模組或函數的代碼。

  6. 第三方套件和模組的相容性:

    一些第三方套件或模組可能會依賴於特定的 Node.js 版本。因此,升級 Node.js 時,你需要確保你的依賴項也能與新版本兼容。

  7. Node.js 的 LTS 版本:

    LTS(長期支持)版本會提供長達 30 個月的支持,包括安全性和錯誤修復。這使得它成為生產環境中的首選版本。

總的來說,升級到最新版本的 Node.js 通常是一個好主意,因為它會帶來許多新的特性、效能提升和安全性改進。但在進行升級之前,請確保測試你的應用程式以確保它在新版本中運行正常。如果你的應用程式依賴於特定版本的 Node.js,則需要考慮相關的相容性問題。

LTS長期支持版本

https://ithelp.ithome.com.tw/upload/images/20231024/20135750cdeUAM1nm6.png

LTS(長期支援)是 Node.js 的一個版本分支,其主要目的是提供長期的穩定性和安全性支持。以下是有關 LTS 的詳細說明以及在不再得到支援之後可能發生的情況:

LTS(長期支援)的重要性:

  1. 長期穩定性:LTS 版本被設計為提供長時間的穩定性,這使得它成為生產環境中首選的版本。
  2. 安全性和錯誤修復:LTS 版本會定期接收安全性更新和錯誤修復,以確保它們在生產環境中的安全運行。
  3. 支援期間:一個 LTS 版本的支援期間通常為 30 個月,這使得開發者可以在相當長的時間內繼續使用這個版本。

LTS 的支援結束:

當一個 LTS 版本的支援期間結束時,以下情況可能發生:

  1. 不再接收安全更新:一旦支援結束,該版本將不再接收針對新安全漏洞的更新。
  2. 不再接收錯誤修復:任何針對該版本的錯誤修復也將停止。
  3. 不再維護:Node.js 社群將不再對該版本進行維護和支援。
  4. 建議升級:開發者將被建議升級到目前的 LTS 版本或最新版本,以獲得最新的特性、安全性更新和錯誤修復。

如何處理 LTS 版本的結束:

當一個 LTS 版本的支援結束時,開發者可以考慮以下選項:

  1. 升級到最新 LTS 版本:如果你的應用程式仍然需要長期支援,建議升級到當前的 LTS 版本,以獲得最新的安全性和穩定性。
  2. 升級到最新版本:如果你的應用程式可以容忍一些變化,可以考慮升級到最新的 Node.js 版本,以獲得最新的功能和改進。
  3. 保持不變:如果你的應用程式仍然在舊版本上運行良好並且不需要新的功能,你可以繼續使用不再支援的版本,但需要自行承擔相應的風險。

總的來說,LTS 版本的重要性在於提供長期的穩定性和安全性,並且在支援結束後,開發者應該考慮適時升級到較新的版本以保護他們的應用程式。

React專案與NodeJS版本關聯

這邊也要提一個有點小尷尬的事情
我工作用的專案版本,目前是NodeJS 14
改成用NodeJS 16仍然可以進行專案的build、serve之類的
但是改到NodeJS18的話,就會出現一些錯誤訊息與問題

這邊微微了解一下為什麼我的react專案會和NodeJS版本有差異
https://ithelp.ithome.com.tw/upload/images/20231024/20135750e3ZsF7bWBx.png

React 專案與 Node.js 版本之間存在一定的相互關係,特別是在建立和執行 React 應用程式時。

  1. 開發環境中的 Node.js:

    在開發 React 應用程式時,你需要安裝 Node.js 作為開發環境的一部分。Node.js 提供了 npm(Node Package Manager)這個包管理器,用於安裝和管理與 React 相關的套件和工具。

  2. Node.js 版本的選擇:

    你可以根據你的喜好和專案的需求來選擇 Node.js 的版本。通常來說,你可以選擇 LTS(長期支持)版本以獲得長時間的支援和穩定性,這對於生產環境來說特別重要。

  3. npm 套件的相容性:

    一些 React 相關的套件或工具可能會依賴於特定版本的 Node.js。因此,在選擇 Node.js 版本時,你需要確保它與你所需的套件相兼容。

  4. 建議的 Node.js 版本:

    React 官方文檔通常會建議一些相容的 Node.js 版本。你可以在官方文檔或社群的指南中找到相應的信息。

  5. Node.js 環境的設定:

    在 React 專案中,你可以使用 .nvmrc 文件來指定所需的 Node.js 版本。這使得在不同專案之間更容易地管理和維護相關的 Node.js 版本。

總的來說,React 專案的開發環境通常需要一個適當版本的 Node.js 作為支持。在選擇 Node.js 版本時,你應該考慮到專案的需求、相容性以及你個人的偏好。並確保選擇的版本能夠保證專案的正常運行和開發工作的順利進行。

https://ithelp.ithome.com.tw/upload/images/20231024/20135750ejc4ZV9wHo.png

如果你的專案中使用的 Node.js 版本已經不再得到支援,你應該考慮升級到一個仍在獲得支援的版本。以下是一個詳細的步驟:

  1. 確認當前 Node.js 版本:

    首先,你需要確認你目前正在使用的 Node.js 版本。你可以在終端機中輸入以下指令:

    node --version
    

    這會顯示你目前安裝的 Node.js 版本。

  2. 升級 nvm(如果使用):

    如果你使用了 nvm(Node Version Manager),建議先升級 nvm 到最新版本,這樣你可以更輕鬆地安裝和管理新版本的 Node.js。

    nvm install node --reinstall-packages-from=current
    
  3. 選擇新版本:

    使用 nvm 或者直接前往 Node.js 的官方網站下載最新的 LTS 版本。

    • 如果使用 nvm:

      nvm install --lts
      
    • 如果直接下載:

      前往 Node.js 官方網站 下載最新的 LTS 版本,並安裝它。

  4. 更新 npm(可選):

    隨著新版本的 Node.js 安裝,通常也會附帶更新的 npm。你可以檢查新版本的 npm 是否需要更新:

    npm --version
    
  5. 測試新版本:

    在升級之後,請確保你的專案仍然可以正常運行。測試所有的功能以確保新版本不會對你的應用程式造成任何問題。

  6. 備份重要資料:

    在進行任何重大升級前,請確保備份重要的專案文件和數據,以免出現意外情況。

  7. 更新專案文件(如果需要):

    如果你的專案中包含了對 Node.js 版本的特定要求,請確保相應的文件(例如 .nvmrc)已經更新為反映新的 Node.js 版本。

通過這些步驟,你應該能夠安全地升級你的 Node.js 版本,並確保你的專案能夠正常運行。如果你在升級過程中遇到了問題,你可以在相關社群或論壇中尋求幫助。

npm & NodeJS

最後額外詢問與了解,我們安裝套件時候的npm和nodeJS的關係是什麼
https://ithelp.ithome.com.tw/upload/images/20231024/20135750umRusPro6s.png

Node.js 版本和 npm(Node Package Manager)的版本之間存在著一定的關係:

  1. 隨附關係:

    每個 Node.js 版本都會隨附一個特定版本的 npm。當你安裝或升級 Node.js 時,相應版本的 npm 也會一起安裝或升級。

  2. npm 隨 Node.js 更新:

    隨著 Node.js 的更新,通常會包括一個新版本的 npm。這是因為 Node.js 和 npm 是緊密相關的工具,它們一起提供了開發和部署 JavaScript 應用程式所需的基本功能。

  3. npm 獨立更新:

    儘管 npm 通常隨著 Node.js 更新,但也可以單獨進行更新。你可以通過以下指令來更新 npm:

    npm install -g npm@latest
    

    這將會安裝最新版本的 npm。

  4. 相容性:

    在選擇 Node.js 版本時,你也需要考慮與該版本相容的 npm 版本。一般來說,較新版本的 Node.js 也支援較新版本的 npm。

總的來說,Node.js 和 npm 是緊密相關的工具,它們一起提供了開發和執行 JavaScript 應用程式所需的環境和套件管理功能。因此,確保你的 Node.js 版本與相應的 npm 版本相容,可以確保你能夠順利開發和執行你的應用程式。如果你需要升級 npm,你可以使用上述提供的指令來進行更新。

統整重點

https://ithelp.ithome.com.tw/upload/images/20231024/20135750OuASSRAFyI.png

綜合以上內容,以下是有關 Node.js 版本、npm 和專案開發的重點:

  1. Node.js 版本選擇:
    • 選擇適合的 Node.js 版本對於開發和執行應用程式至關重要。
    • LTS(長期支援)版本提供了長時間的穩定性和安全性支援,是生產環境中的首選版本。
  2. Node Version Manager (nvm):
    • nvm 是一個方便的工具,可以讓你在不同的專案之間輕鬆地切換和管理 Node.js 版本。
  3. npm 版本相容性:
    • Node.js 版本與相應的 npm 版本之間存在相容性,請確保它們互相支援。
  4. npm 的獨立更新:
    • npm 可以單獨進行更新,通常隨著 Node.js 更新,但也可以獨立更新以獲得最新功能。
  5. React 專案與 Node.js 版本關聯:
    • 在開發 React 應用程式時,需要在開發環境中安裝適當版本的 Node.js。
  6. LTS 版本重要性:
    • LTS 版本提供了長期的穩定性和安全性支援,尤其適用於生產環境。

結語:

選擇合適的 Node.js 版本對於順利開發和執行你的應用程式至關重要。在升級 Node.js 版本時,也要確保相應的 npm 版本相容。使用工具如 nvm 可以讓你更靈活地管理不同專案的 Node.js 版本。總的來說,合理的版本管理將有助於保證你的專案的穩定性和安全性,並確保你能夠充分利用最新的功能和改進。

結語

本次對話記錄在這邊:
https://chat.openai.com/share/573055a1-6bd0-4940-8b13-7244ca688c65

本次有一點點算是下一篇的安裝前導,針對...nodeJS版本無法隨意切換的人aka我
讓專案間的nodeJS版本可以獨立管理是也有好處,但一切就是看維護與開發怎麼安排

所有專案環境一致並一起升級套件也沒有錯,各自分開也沒有不對
有些專案的套件不是那麼好升級,我後來發現我卡在react-konva這個套件的依賴上

另外最近幾天,訂閱這個系列文章的人數突然變多了!
覺得很榮幸,也很高興、更有動力把原本預計要處理的主題給寫完
(別看這樣順順地走,但每一篇仍然花我超過三四個小時才產出來,何況有些要跟著做的)
感謝大家的訂閱與支持,也希望大家不會覺得鐵人賽結束之後每天發文很吵
(快..結束...了...大概....)

然後下一篇!NestJS!
我是因此更了解有關nodeJS的前端工程師一宵三筵,我們明天見!


上一篇
【Day40】ChatGPT請教教我:進階SQL語法!JOIN!
下一篇
【Day42】ChatGPT請教教我:NestJS!(一)- 安裝 & 基本介紹 & Module概念
系列文
用ChatGPT詠唱來完成工作與點亮前後端技能樹 共 56 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言